博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 Struts2 的文件下载
阅读量:4684 次
发布时间:2019-06-09

本文共 2758 字,大约阅读时间需要 9 分钟。

介于上篇我们讲述了基于 Struts2 的单文件和多文件上传,这篇我们来聊一聊基于 Struts2 的文件下载。

1、导 jar 包

commons-io-2.0.1.jar

struts2-core-2.3.15.3.jar

xwork-core-2.3.15.3.jar

struts2-sunspoter-stream-1.2.jar

2、web.xml 配置 Struts2 核心过滤器

1 
2
struts2
3
4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 5
6
7 8
9
struts2
10
/*
11

3、JSP 文件下载页(注意:链接中 filename 后跟的文件名需与 Action 文件下载路径中已知的文件名一致)

4、实现文件下载上传的 DownloadAction

1 package com.fhcq.action;  2   3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileNotFoundException;  6 import java.io.InputStream;  7 import java.io.UnsupportedEncodingException;  8 import javax.servlet.ServletContext;  9 import org.apache.struts2.ServletActionContext; 10 import com.opensymphony.xwork2.ActionSupport; 11  12 public class DownloadAction extends ActionSupport { 13  14 	//提供一个InputStream类型的输入流 15 	private InputStream inputStream; //注意:在给InputSteam指定名称时,不能使用in 16 	//创建一个文件名的属性 17 	private String filename; 18  19 	public String download() throws FileNotFoundException{ 20  21 		//1.找到文件的存储路径 22 		ServletContext servletContext = ServletActionContext.getServletContext(); 23 		String realPath = servletContext.getRealPath("/WEB-INF/file"); 24 		//2.根据文件路径和文件名new一个新文件 25 		File file = new File(realPath,filename); 26  27 		//3.把文件读到一个InputStream中 28 		inputStream = new FileInputStream(file); 29 		//4.返回一个SUCCESS 30 		return SUCCESS; 31 		//5.由一个叫做stream的结果类型为我们把剩下的事情做完。 32 	} 33  34 	public InputStream getInputStream() { 35 		return inputStream; 36 	} 37  38 	public void setInputStream(InputStream inputStream) { 39 		this.inputStream = inputStream; 40 	} 41  42 	public String getFilename() { 43  44 		//解决中文文件名在下载过程出现乱码问题,struts.xml中也需添加charset=iso-8859-1 45 		try { 46 			filename=new String(filename.getBytes(),"iso-8859-1"); 47 		} catch (UnsupportedEncodingException e) { 48 			// TODO Auto-generated catch block 49 			e.printStackTrace(); 50 		} 51 		return filename; 52 	} 53  54 	public void setFilename(String filename) { 55 		this.filename = filename; 56 	} 57  58 }

5、配置 struts.xml

1 
2
3
4
5 6
7
8
9
10
11
12
13
14
application/octet-stream;charset=iso-8859-1 15
16
17
attachment;filename=${filename} 18
19
inputStream 20
21
22
23

转载于:https://www.cnblogs.com/justlove/p/6817608.html

你可能感兴趣的文章
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
kafka中的消费组
查看>>
python--注释
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
python sum函数导入list_python sum函数iterable参数为二维list,start参数为“[]”该如何理解...
查看>>
android 练习之路 (八)
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
压缩文件函数库(转载)
查看>>
【转】ubuntu12.04没有/var/log/messages解决
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>
函数的复写
查看>>
17_重入锁ReentrantLock
查看>>
winform窗口关闭提示
查看>>